There is a need to have controlled distribution of digital files in order to protect the proprietary ownership rights as well as non-copyrighted works and other rights including trade secret and business proprietary.
Heretofore, the provision of secured communication (or other distribution) of data files to be protected, has been provided utilizing a variety of techniques, all of which are complex and confusing to the users of the product. Furthermore, the so-called electronic data files, lack in actual security offered, and often fail in being utilized in the areas where it is needed.
In the case of distribution of data files of content comprising text, images, and electronic sheet music, a number of formats have been derived to securely transmit and restrict and selectively provide for either viewing and/or printing of electronic data files. Proprietary systems are available from the music composition software companies of Sibelius (providing a “Scorch” product), and a Finale/Make Music, Inc., which provides its own tools. Additionally, numerous encryption schemes have been derived for transfer of audio music files. These include those provided at the iTunes' website by Apple Computer, Inc., and analogous schemes from others. Additionally, the company PGP, Inc. (Pretty Good Privacy, Inc.), provides both free and purchasable commercial grade products implementing data encryption techniques to permit RSA encryption implementation on files representing data content or application files. Furthermore, many Adobe Acrobat, “PDF” data files are in use, but with minimal or no protection. Additionally, Windows XP, by Microsoft, Inc., offers options for encryption of files.
Secure distribution usually involves encryption or proprietary conversion of some kind. There are many well-known options for this. Encryption, hash functions, other one-way functions, and symmetric and asymmetric encryption are well known to those skilled in the art. (To generally educate oneself, see Applied Cryptography, by Bruce Schneier, Chapter 2, Protocol Building Blocks; also see Section 2.3 on One-Way Functions). The present invention is not restricted to any specific type of encryption, and is compatible with any that otherwise fits specific design needs of an embodiment.
Usage of specific terminology defined within this patent specification shall have the specific meaning ascribed it therein.
The notion of a one-way function is central to public-key cryptography. While not protocols in themselves, one-way functions are a fundamental building block.
One-way functions are relatively easy to compute, but significantly harder to reverse. That is, given x it is easy to compute f(x), but given f(x) it is hard to compute x.
A trap-door one-way function is a special type of one-way function, one with a secret trapdoor. It is easy to compute in one direction and hard to compute in the other direction. But, if one knows the secret, one can easily compute the function in the other direction. That is, it is easy to compute f(x) given x, and hard to compute x given f(x). However, there is some secret information, y, such that given f(x) and y it is easy to compute x.
A one-way hash function can be implemented in many ways and has many names such as compression function, contraction function, message digest, fingerprint, cryptographic checksum, message integrity check (MIC), and manipulation detection code (MDC). One-way hash functions are central to modern cryptography, and are another building block for many protocols.
Hash functions have been used in computer science for a long time. A hash function is a function, mathematical or otherwise, that takes a variable-length input string (called a pre-image) and converts it to a fixed-length (generally smaller) output string (called a hash value).
The point here is to produce a value that indicates whether a candidate pre-image is likely to be the same as the real pre-image. Because hash functions are typically many-to-one, you cannot use them to determine with certainty that the two strings are equal, but you can use them to get a reasonable assurance of accuracy.
A one-way hash function is a hash function that works in one direction: It is easy to compute a hash value from pre-image, but it is hard to generate a pre-image that hashes to a particular value. A good one-way hash function is also collision-free: It is hard to generate two pre-images with the same hash value.
The hash function can be public; there's no need for secrecy to the process. The security of a one-way hash function is its one-wayness. The output is not dependent on the input in any discernible way. A single bit change in the pre-image changes, on the average, half of the bits in the hash value. Given a hash value, it is computationally unfeasible to find a pre-image that hashes to that value.
A hash function can be thought of as a way of fingerprinting files. Thus, to verify that someone has a particular file (that you also have), then ask him for the hash value. If he sends you the correct hash value, then it is almost certain that he has that file. Normally, a one-way hash function is used without a key, so that anyone can verify the hash. If one wants only the recipient to be able to verify the hash, then one can use Message Authentication Codes.
A Message Authentication Code (MAC), also known as a data authentication code (DAC), is a one-way hash function with the addition of a secret key. The hash value is a function of both the pre-image and the key. The theory is exactly the same as hash functions, except only someone with the key can verify the hash value. A MAC can be created out of a hash function or a block encryption algorithm; there are also dedicated MACs.
Public-key cryptography, as described in 1976 by Whitefield Diffie and Martin Hellman, uses two different keys—one public and the other private. It is computationally hard to deduce the private key from the public key. Anyone with the public key can encrypt a message but only the person with the private key can decrypt the message.
Mathematically, the process is based on the trap-door one-way functions. Encryption is the easy direction. Instructions for encryption are the public key; anyone can encrypt a message. Decryption is the hard direction. In the best case, it is made hard enough that people with super computers and years couldn't decrypt the message without the secret. The secret, or trap-door, is the private key. With that secret, decryption is as easy as encryption.
To send a message using public-key cryptography:
(1) Both parties agree on a public-key cryptosystem.
(2) Party 1 sends Party 2 a public key.
(3) Party 2 encrypts a message using Party 1's public key and sends it to party 1.
(4) Party 1 decrypts Party 2's message using Party 1's private key.
Commonly, a network of users agrees on a public-key cryptosystem. Every user has his or her own public key and private key, and the public keys are all published in a database somewhere.
With asymmetric key encryption, one key is public (e.g., to encrypt or to decrypt), and the other key is private (e.g., to decrypt or to encrypt, respectively).
In the real world, public-key algorithms are not a substitute for symmetric algorithms. They are not used to encrypt messages; they are used to encrypt keys. The reasons for this are that public-key algorithms are slow and that public-key cryptosystems are vulnerable to chosen-plaintext attacks.
In most practical implementations public-key cryptography is used to secure and distribute session keys; those session keys are used with symmetric algorithms to secure message traffic. This is sometimes called a hybrid cryptosystem.
Using public-key cryptography for key distribution solves a very important key-management problem. With symmetric cryptography, the data encryption key sits around until it is used. If anyone ever gets their hands on it, they can decrypt messages encrypted with it. With the hybrid cryptosystem, the session key is created when it is needed to encrypt communications and destroyed when it is no longer needed. This drastically reduces the risk of compromising the session key. Of course, the private key is vulnerable to compromise, but it is at less risk because it is only used once per communication to encrypt a session key.
Public-key Cryptography or Public Key Cryptography refers to a form of cryptography in which each user has a public key and a private key. Messages are sent encrypted with the receiver's public key; the receiver decrypts them using the private key. Using this method, the private key never has to be revealed to anyone other than the user.
Private Key Encryption refers to a form of cryptography in which sender and receiver have the same key or similar keys.
Private Key Cryptography refers to a form of cryptography in which the encryptor and decryptor use the same key, which must be kept secret. This methodology is usually only used by a small group.
Secret Key Encryption refers to a form of cryptography in which sender and receiver share a secret key.
As discussed above, hash functions are one-way functions.                Hashing is one-way function. It cannot be reversed.                    From the hash, you cannot compute the original message.                        Hashing is repeatable.                    If two parties apply the same hashing method to the same bit string, they will get the same hash.                        Standard hash functions include:        1. SHA-1—Secure Hash Algorithm (vers. 2)                    NIST standard 1995            160-bit message digest, input processed 512-bit blocks                        2. MD5—Message Digest 5                    RFC 1321            128-bit message digest                        Prior applications of hash functions include:                    A. Storing passwords on disk (Unix, Windows, Macintosh, Linux)            B. Creating a digest of a message (a fingerprint) later to be signed            C. Authentication: send Hash (random_value+key)                        
Encryption is different than Hashing.                encryption uses a key as an input to an encryption method,        the output is similar in length to input; and        is reversible (ciphertext can be decrypted back to plaintext).        
With Hashing,                a key is usually added to text; the two are combined, and the combination is hashed;        the output is of a fixed short length, regardless of input; and        it is a one-way function (hash cannot be “de-hashed” back to the original string).        
Most encrypted content today is encrypted with an encryption key and then a decryption key is used to decrypt the data. The encryption/decryption key pair are sometimes identical (the same) or a matched pair (but different). Either way, the decryption key must be supplied to decrypt the content. If a new decryption key is desired, the content must be re-encrypted. Further, as long as one has the decryption key and the encrypted content, it can be decrypted anywhere and once decrypted, the data can be copied as desired.
A need, therefore, exists for encrypted content to be encrypted only once and yet can be distributed widely. A need exists for the distributed encrypted content to only be available for use on certain specific authorized computers, for usage in accordance with defined usage rights (that can be fixed or have varying rights. A need exists to minimize the computational power required to distribute content to a plurality of users (e.g., up to thousands or even to millions of customers) and a need exists to allow such content to be distributed on media such as mass produced CD-ROMs.
Server-based authentication, while possible, is limited in utility by requiring connection to a server for authentication in order for an appliance to use a file.
It is, therefore, an object of the present invention to provide a methodology and system to provide for the selectively controllable distribution of data files (content) to be protected, and selectively controllable computer appliance specific based usage options such as viewing and printing of electronic data files (or exporting of files, or running of an application software program). It is a further object to make the use of the methodology and system easy and straight forward for the provider of encryption services and for the consumer of decryption services.